unit uGroupImpl;

interface

type
  IGroup = interface
  ['{4ED39283-0AED-4AAC-AA26-7D5B455A2573}']
    procedure SetName(const Value: WideString);
    function GetName: WideString;
    procedure SetDescription(const Value: WideString);
    function GetDescription: WideString;

    property Name: WideString read GetName write SetName;
    property Description: WideString read GetDescription write SetDescription;
  end;

  function NewGroup: IGroup;

implementation

type
  TGroup = class(TInterfacedObject, IGroup)
  private
    fName: Widestring;
    fDescription: WideString;
  protected
    procedure SetName(const Value: WideString);
    function GetName: WideString;
    procedure SetDescription(const Value: WideString);
    function GetDescription: WideString;
  end; 

function NewGroup: IGroup;
begin
  Result := TGroup.Create;
end;

{ TGroup }

function TGroup.GetDescription: WideString;
begin
  Result := fDescription;
end;

function TGroup.GetName: WideString;
begin
  Result := fName;
end;

procedure TGroup.SetDescription(const Value: WideString);
begin
  fDescription := Value;
end;

procedure TGroup.SetName(const Value: WideString);
begin
  fName := Value;
end;

end.
